#ifndef UTILITY_TYPE_H
#define UTILITY_TYPE_H

#include <type_traits>

#define STATIC_ASSERT_INTEGRAL(T) \
    static_assert(std::is_integral_v<T>, "Must be integral type")

#define STATIC_ASSERT_ARITHMETIC(T) \
    static_assert(std::is_arithmetic_v<T>, "Must be arithmetic")

#define STATIC_ASSERT_SIMPLE(expr) static_assert((expr), #expr)

#endif